package com.huanf.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author: 35238
 * 功能: 写Excel-easyPoi-写入(导入)集合数据类型(无数据库)
 * 时间: 2023-12-25 17:28
 */
@Data
@ExcelTarget("excelListWriteVo") //自定义的唯一标识，没有实际意义
public class ExcelListWriteVo implements Serializable {

    @Excel(name = "姓名")
    private String name;

    @ExcelIgnore //1.把这个真实的集合类型的属性，使用@ExcelIgnore注解，使得不写入到Excel表格。然后自己写一个冒充字段，类型不是集合类型而是字符串类型
    private List<String> hobby;

    //为什么要冒充一个字段。原因: 如果往Excel表格写入集合数据的话，写出来的样子是 [打篮球,跑步,看书]，导致不仅有中括号，还有逗号这种多余的
    //我们期望的是这个集合数据，写入Excel时，展示的内容没有中括号，并且多个数据之间的连接符号不是逗号，是其它符号，例如、符号

    @Excel(name = "偏好",width = 20)
    private String hobbyMaoChong; //2.这个是冒充的，但是我们重点在这里

    //3.写了上面那个冒充字段之后，还要手动加一个关于冒充字段的get方法
    public String getHobbyMaoChong() {
        StringBuilder stringBuilder = new StringBuilder();
        hobby.forEach(e->{ //遍历这个真实的属性，然后把值拼接给冒充的属性
            stringBuilder.append(e).append("、"); //把真实的集合属性的每个数据，用、分隔
        });
        String str = stringBuilder.toString();
        return str.substring(0, str.length() - 1); //去掉最后一个、符号
    }

    //然后不需要改业务代码，就改这里的实体类就行(我用数字标出来的3个步骤)，就能实现我们想要的效果
}
